package com.yourcompany.api.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yourcompany.api.dto.RoleDTO;
import com.yourcompany.api.dto.RoleQueryDTO;
import com.yourcompany.api.entity.Role;
import com.yourcompany.api.vo.RoleVO;
import com.yourcompany.api.dto.RolePermissionDTO;

import java.util.List;

public interface RoleService extends IService<Role> {

    /**
     * 创建角色
     */
    void createRole(RoleDTO roleDTO);

    /**
     * 更新角色
     */
    void updateRole(Long id, RoleDTO roleDTO);

    /**
     * 删除角色
     */
    void deleteRole(Long id);

    /**
     * 获取角色详情
     */
    RoleVO getRoleById(Long id);

    /**
     * 分页查询角色列表
     */
    IPage<RoleVO> pageRoles(IPage<Role> page, RoleQueryDTO queryDTO);

    /**
     * 获取所有可用角色
     */
    List<RoleVO> listAllEnabledRoles();

    /**
     * 修改角色状态
     */
    void updateStatus(Long id, Boolean status);

    /**
     * 分配角色权限
     */
    void assignPermissions(RolePermissionDTO rolePermissionDTO);

    /**
     * 获取角色的权限ID列表
     */
    List<Long> getRolePermissionIds(Long roleId);

    /**
     * 获取多个角色的权限ID列表
     */
    List<Long> getRolePermissionIds(List<Long> roleIds);
} 